using System;
using System.Collections.Generic;
using System.Text;
using Csla.Data;

namespace MinaspetroLibrary.AcessoriaPack
{
    [Serializable()]
    public class AcessoriaChildInfo : Csla.ReadOnlyBase<AcessoriaChildInfo>
    {
        #region Business Properties and Methods

        //declare members

        private Guid _id = Guid.NewGuid();

        private string _razaoSocial = string.Empty;

        private string _nomeFantasia = string.Empty;

        private string _endereco = string.Empty;

        private string _cEP = string.Empty;

        private string _bairro = string.Empty;

        private string _fone = string.Empty;

        private string _fax = string.Empty;

        private string _caixaPostal = string.Empty;

        private string _email = string.Empty;

        private string _cNPJ = string.Empty;

        private string _inscricaoEstadual = string.Empty;

        private bool _possuiLojaConveniencia = false;

        private string _cNPJLoja = string.Empty;

        private string _bandeira = string.Empty;

        private string _correspondenciaEndereco = string.Empty;

        private string _correspondenciaNumero = string.Empty;

        private string _correspondenciaCEP = string.Empty;

        private string _correspondenciaBairro = string.Empty;

        private string _correspondenciaCidade = string.Empty;

        private bool _postoProprio = false;

        private bool _postoArrendado = false;

        private bool _postoPropiroDistribuidora = false;

        private bool _bandeiraBranca = false;

        private bool _bandeiraDistribuidora = false;

        private string _socioNome = string.Empty;

        private DateTime _socioDataNascimento = DateTime.Now;

        private string _socioEstadoCivil = string.Empty;

        private string _socioNatural = string.Empty;

        private string _socioEndereco = string.Empty;

        private string _socioNumero = string.Empty;

        private string _socioCEP = string.Empty;

        private string _socioBairro = string.Empty;

        private string _socioCidade = string.Empty;

        private string _socioFone = string.Empty;

        private string _contadorNome = string.Empty;

        private string _contadorEscritorio = string.Empty;

        private string _contadorEndereco = string.Empty;

        private string _contadorNumero = string.Empty;

        private string _contadorCEP = string.Empty;

        private string _contadorBairro = string.Empty;

        private string _contadorCidade = string.Empty;

        private string _contadorFone = string.Empty;

        private string _contadorFax = string.Empty;

        private string _contadorEmail = string.Empty;

        private string _contadorData = string.Empty;

        private string _contadorNomeInformante = string.Empty;

        [System.ComponentModel.DataObjectField(true, true)]
        public Guid Id
        {
            get
            {
                return _id;
            }
        }

        public string RazaoSocial
        {
            get
            {
                return _razaoSocial;
            }
        }

        public string NomeFantasia
        {
            get
            {
                return _nomeFantasia;
            }
        }

        public string Endereco
        {
            get
            {
                return _endereco;
            }
        }

        public string CEP
        {
            get
            {
                return _cEP;
            }
        }

        public string Bairro
        {
            get
            {
                return _bairro;
            }
        }

        public string Fone
        {
            get
            {
                return _fone;
            }
        }

        public string Fax
        {
            get
            {
                return _fax;
            }
        }

        public string CaixaPostal
        {
            get
            {
                return _caixaPostal;
            }
        }

        public string Email
        {
            get
            {
                return _email;
            }
        }

        public string CNPJ
        {
            get
            {
                return _cNPJ;
            }
        }

        public string InscricaoEstadual
        {
            get
            {
                return _inscricaoEstadual;
            }
        }

        public bool PossuiLojaConveniencia
        {
            get
            {
                return _possuiLojaConveniencia;
            }
        }

        public string PossuiLojaConvenienciaString
        {
            get
            {
                if (_possuiLojaConveniencia)
                    return "PossuiLojaConveniencia";
                return string.Empty;
            }
        }

        public string CNPJLoja
        {
            get
            {
                return _cNPJLoja;
            }
        }

        public string Bandeira
        {
            get
            {
                return _bandeira;
            }
        }

        public string CorrespondenciaEndereco
        {
            get
            {
                return _correspondenciaEndereco;
            }
        }

        public string CorrespondenciaNumero
        {
            get
            {
                return _correspondenciaNumero;
            }
        }

        public string CorrespondenciaCEP
        {
            get
            {
                return _correspondenciaCEP;
            }
        }

        public string CorrespondenciaBairro
        {
            get
            {
                return _correspondenciaBairro;
            }
        }

        public string CorrespondenciaCidade
        {
            get
            {
                return _correspondenciaCidade;
            }
        }

        public bool PostoProprio
        {
            get
            {
                return _postoProprio;
            }
        }

        public string PostoProprioString
        {
            get
            {
                if (_postoProprio)
                    return "PostoProprio";
                return string.Empty;
            }
        }

        public bool PostoArrendado
        {
            get
            {
                return _postoArrendado;
            }
        }

        public string PostoArrendadoString
        {
            get
            {
                if (_postoArrendado)
                    return "PostoArrendado";
                return string.Empty;
            }
        }

        public bool PostoPropiroDistribuidora
        {
            get
            {
                return _postoPropiroDistribuidora;
            }
        }

        public string PostoPropiroDistribuidoraString
        {
            get
            {
                if (_postoPropiroDistribuidora)
                    return "PostoPropiroDistribuidora";
                return string.Empty;
            }
        }

        public bool BandeiraBranca
        {
            get
            {
                return _bandeiraBranca;
            }
        }

        public string BandeiraBrancaString
        {
            get
            {
                if (_bandeiraBranca)
                    return "BandeiraBranca";
                return string.Empty;
            }
        }

        public bool BandeiraDistribuidora
        {
            get
            {
                return _bandeiraDistribuidora;
            }
        }

        public string BandeiraDistribuidoraString
        {
            get
            {
                if (_bandeiraDistribuidora)
                    return "BandeiraDistribuidora";
                return string.Empty;
            }
        }

        public string SocioNome
        {
            get
            {
                return _socioNome;
            }
        }

        public DateTime SocioDataNascimento
        {
            get
            {
                return _socioDataNascimento;
            }
        }

        public string SocioDataNascimentoShortString
        {
            get
            {
                return _socioDataNascimento.ToString("dd/MM/yyyy");
            }
        }

        public string SocioDataNascimentoFullString
        {
            get
            {
                return _socioDataNascimento.ToString("dd/MM/yyyy HH:mm");
            }
        }

        public string SocioEstadoCivil
        {
            get
            {
                return _socioEstadoCivil;
            }
        }

        public string SocioNatural
        {
            get
            {
                return _socioNatural;
            }
        }

        public string SocioEndereco
        {
            get
            {
                return _socioEndereco;
            }
        }

        public string SocioNumero
        {
            get
            {
                return _socioNumero;
            }
        }

        public string SocioCEP
        {
            get
            {
                return _socioCEP;
            }
        }

        public string SocioBairro
        {
            get
            {
                return _socioBairro;
            }
        }

        public string SocioCidade
        {
            get
            {
                return _socioCidade;
            }
        }

        public string SocioFone
        {
            get
            {
                return _socioFone;
            }
        }

        public string ContadorNome
        {
            get
            {
                return _contadorNome;
            }
        }

        public string ContadorEscritorio
        {
            get
            {
                return _contadorEscritorio;
            }
        }

        public string ContadorEndereco
        {
            get
            {
                return _contadorEndereco;
            }
        }

        public string ContadorNumero
        {
            get
            {
                return _contadorNumero;
            }
        }

        public string ContadorCEP
        {
            get
            {
                return _contadorCEP;
            }
        }

        public string ContadorBairro
        {
            get
            {
                return _contadorBairro;
            }
        }

        public string ContadorCidade
        {
            get
            {
                return _contadorCidade;
            }
        }

        public string ContadorFone
        {
            get
            {
                return _contadorFone;
            }
        }

        public string ContadorFax
        {
            get
            {
                return _contadorFax;
            }
        }

        public string ContadorEmail
        {
            get
            {
                return _contadorEmail;
            }
        }

        public string ContadorData
        {
            get
            {
                return _contadorData;
            }
        }

        public string ContadorNomeInformante
        {
            get
            {
                return _contadorNomeInformante;
            }
        }


        protected override object GetIdValue()
        {
            return _id.ToString();
        }

        #endregion //Business Properties and Methods

        #region Authorization Rules
        protected override void AddAuthorizationRules()
        {
            //TODO: Define authorization rules in AcessoriaChildInfo

        }

        #endregion //Authorization Rules

        #region Factory Methods
        internal static AcessoriaChildInfo GetAcessoriaChildInfo(SafeDataReader dr)
        {
            return new AcessoriaChildInfo(dr);
        }

        private AcessoriaChildInfo(SafeDataReader dr)
        {
            Fetch(dr);
        }
        #endregion //Factory Methods

        #region Data Access

        #region Data Access - Fetch
        private void Fetch(SafeDataReader dr)
        {
            FetchObject(dr);

            //load child object(s)
            FetchChildren(dr);

        }

        private void FetchObject(SafeDataReader dr)
        {
            _id = new Guid(dr["Id"].ToString());
            _razaoSocial = dr.GetString("RazaoSocial");
            _nomeFantasia = dr.GetString("NomeFantasia");
            _endereco = dr.GetString("Endereco");
            _cEP = dr.GetString("CEP");
            _bairro = dr.GetString("Bairro");
            _fone = dr.GetString("Fone");
            _fax = dr.GetString("Fax");
            _caixaPostal = dr.GetString("CaixaPostal");
            _email = dr.GetString("Email");
            _cNPJ = dr.GetString("CNPJ");
            _inscricaoEstadual = dr.GetString("InscricaoEstadual");
            _possuiLojaConveniencia = dr.GetBoolean("PossuiLojaConveniencia");
            _cNPJLoja = dr.GetString("CNPJLoja");
            _bandeira = dr.GetString("Bandeira");
            _correspondenciaEndereco = dr.GetString("CorrespondenciaEndereco");
            _correspondenciaNumero = dr.GetString("CorrespondenciaNumero");
            _correspondenciaCEP = dr.GetString("CorrespondenciaCEP");
            _correspondenciaBairro = dr.GetString("CorrespondenciaBairro");
            _correspondenciaCidade = dr.GetString("CorrespondenciaCidade");
            _postoProprio = dr.GetBoolean("PostoProprio");
            _postoArrendado = dr.GetBoolean("PostoArrendado");
            _postoPropiroDistribuidora = dr.GetBoolean("PostoPropiroDistribuidora");
            _bandeiraBranca = dr.GetBoolean("BandeiraBranca");
            _bandeiraDistribuidora = dr.GetBoolean("BandeiraDistribuidora");
            _socioNome = dr.GetString("SocioNome");
            _socioDataNascimento = dr.GetDateTime("SocioDataNascimento");
            _socioEstadoCivil = dr.GetString("SocioEstadoCivil");
            _socioNatural = dr.GetString("SocioNatural");
            _socioEndereco = dr.GetString("SocioEndereco");
            _socioNumero = dr.GetString("SocioNumero");
            _socioCEP = dr.GetString("SocioCEP");
            _socioBairro = dr.GetString("SocioBairro");
            _socioCidade = dr.GetString("SocioCidade");
            _socioFone = dr.GetString("SocioFone");
            _contadorNome = dr.GetString("ContadorNome");
            _contadorEscritorio = dr.GetString("ContadorEscritorio");
            _contadorEndereco = dr.GetString("ContadorEndereco");
            _contadorNumero = dr.GetString("ContadorNumero");
            _contadorCEP = dr.GetString("ContadorCEP");
            _contadorBairro = dr.GetString("ContadorBairro");
            _contadorCidade = dr.GetString("ContadorCidade");
            _contadorFone = dr.GetString("ContadorFone");
            _contadorFax = dr.GetString("ContadorFax");
            _contadorEmail = dr.GetString("ContadorEmail");
            _contadorData = dr.GetString("ContadorData");
            _contadorNomeInformante = dr.GetString("ContadorNomeInformante");

        }

        private void FetchChildren(SafeDataReader dr)
        {
        }
        #endregion //Data Access - Fetch
        #endregion //Data Access
    }
}
